package cn.lingnan.service;

import cn.lingnan.pojo.dto.*;
import cn.lingnan.pojo.entity.PageBean;
import cn.lingnan.pojo.vo.*;

import java.util.List;

public interface UserService {
    PageBean getAll(UserPageQueryAllDTO userPageQueryAllDTO);

    PageBean getSecondhand(UserPageSecendHandDTO userPageSecendHandDTO);

    PropertyVO getPropertyById(Integer propertyId);

    PageBean getLikeProperty(UserPageLikeDTO userPageLikeDTO);

    Integer saveFavorite(Long userId, Long propertyId);

    Integer saveTransaction(Long userId, Long propertyId, double amount);

    List<TransactionVO> getTransactionByUserId(Long userId, Integer type);

    Integer deleteTransactionById(Long transactionId);

    UserVO getUserById(Long userId);

    void updateUserImage(Long userId, String url);

    void updateUser(UserDTO userDTO);

    List<ReviewVO > getReviewByPropertyId(Integer propertyId);

    void saveReview(ReviewDTO reviewDTO);

    List<FavoriteVO> getFavoriteByUserId(Long userId);

    void deleteFavoriteById(Long favoriteId);

    void saveMyPostProperty(PropertyDTO propertyDTO);

    List<MyPropertyVO> getMyPostProperty(Long userId);

    void StartOrStop(Long propertyId, Integer status);

    List<BookingVO> getBookingsByUserId(Long userId);

    void saveBooking(BookingVO bookingVO);

    void deleteBookingById(Long bookingId);
}
